home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # \
- exec expect -- "$0" ${1+"$@"}
- # Name: cryptdir
- # Author: Don Libes, NIST
- #
- # Synopsis:
- # cryptdir [dir]
- # decryptdir [dir]
- #
- # Encrypt or decrypts the current directory or named directory if given.
-
- if {[llength $argv] > 0} {
- cd $argv
- }
-
- # encrypt or decrypt?
- set decrypt [regexp "decrypt" $argv0]
-
- set timeout -1
- stty -echo
- send "Password:"
- expect -re "(.*)\n"
- send "\n"
- set passwd $expect_out(1,string)
-
- # Wouldn't want to encrypt/decrypt files with mistyped password!
- send "Again:"
- expect -re "(.*)\n"
- send "\n"
- if {![string match $passwd $expect_out(1,string)]} {
- send_user "mistyped password?\n"
- stty echo
- exit
- }
- stty echo
-
- log_user 0
- foreach f [glob *] {
- # strip shell metachars from filename to avoid problems
- if {[regsub -all {[]['`~<>:-]} $f "" newf]} {
- exec mv $f $newf
- set f $newf
- }
-
- set strcmp [string compare .crypt [file extension $f]]
- if {$decrypt} {
- # skip files that don't end with ".crypt"
- if {0!=$strcmp} continue
- spawn sh -c "exec crypt < $f > [file root $f]"
- } else {
- # skip files that already end with ".crypt"
- if {0==$strcmp} continue
- spawn sh -c "exec crypt < $f > $f.crypt"
- }
- expect "key:"
- send "$passwd\r"
- expect
- wait
- exec rm -f $f
- send_tty "."
- }
- send_tty "\n"
-